Storytelling visual con R

Curso formativo para el PDI. Universidad de Castilla-La Mancha

Gema Fernández-Avilés
Isidro Hidalgo

Unidad 1 Toolkit del curso R, RStudio y Quarto

Agenda

  1. Objetivos de aprendizaje

  2. Resultados esperados

  3. Conceptos clave

  4. ¿Qué hemos aprendido?

1. Objetivos de aprendizaje 🎯

  • Saber qué es la consola de R y la interfaz gráfica RStudio.

  • Conocer lo imprescindible para trabajar con R como lenjuage de programación.

  • Obtener información de los datos, utilizando herramientas y técnicas de programación modernas: Rstudio.

  • Obtener información de los datos, utilizando herramientas y técnicas de programación modernas y de forma reproducible: Quarto.

  • Recomendar biografía:

    • 📖 Wickham and Grolemund (2016),

    • 📖 Ismay and Kim (2019)

    • 📖 Fernández-Avilés and Montero (2024).

2. Resultados esperados 🏆

Consola de RInterfaz gráfica de Rstudio

3. Conceptos clave 📃

Antes de comenzar: R, Rstsudio y Latex

  1. Descargar e instalar R: https://cloud.r-project.org/

  2. Descargar e instalar Rstudio: https://www.rstudio.com/products/rstudio/download/

Iconos de R (izquierda) y Rstudio (derecha)

  1. Opcional: Instalar Latex. Abre R y copia y pega estas dos órdenes en la consola.
install.packages('tinytex')
tinytex::install_tinytex()
  • Tener instalados los paquetes que solicitamos al inicio del curso.

Lo imprescindible y necesario

Consola de R.

¿Qué más estará programado?

¡Y mucho más!

😀 

Paquetes

  • Instalación de paquetes (sólo se hace una vez).
install.packages("HistData")
  • Lectura de paquetes (se repite cada vez que se usa).
library("HistData")
  • Llamada de funciones dentro de un paquete con ::
dplyr::filter()
  • Llamada de datos dentro de un paquete con ::
HistData::Nightingale

Muy importante

  • R distingue MAYÚSCULAS y minúsculas:
Var
#> Error: object 'Var' not found
  • La almohadilla # sirve para comentar:
2+2  # esto es una suma
[1] 4
  • El operador <- asigna a la parte izquierda lo que hay en la derecha:
x <- 2 + 2
x
[1] 4
  • El operador $ accede a variables dentro de un conjunto de datos:
Nightingale$Army

¿Dónde encontrar ayuda?

  • En el propio programa con la función help() y el operador ?

    • Ayuda de funciones:
help(rnorm)
?rnorm # Equivalente
+  Ayuda de conjunto de datos:
help("iris")
?iris # Equivalente

The R Project for Statistical Computing

Rstudio: la clave 📃

RStudio

Fuente Ismay and Kim (2019)

¿Cuál es la diferencia entre R y RStudio?

Fuente: Ismay and Kim (2019)

Warning

R es un lenguaje de programación que ejecuta cálculos, mientras que RStudio es un entorno de desarrollo integrado (IDE) que proporciona una interfaz y agrega muchas funciones y herramientas útiles.

Diseño de RStudio

Diseño de Rstudio

Warning

La posición relativa de cada panel pueden personalizarse desde el menú: Tools \> Global Options \> Pane Layout

¿Qué son los paquetes de R?

Analogía entre R y los paquetes. Fuente: Ismay and Kim (2019)

Warning

R es como un teléfono móvil nuevo: si bien tiene una cierta cantidad de funciones cuando lo usamos por primera vez, no tiene todo.

Los paquetes son como las aplicaciones que podemos descargar en el teléfono desde la App Store de Apple o Google Play de Android.

Paquetes: instalación y carga

Instalación de paquetes
  1. Click Packages.

  2. Click Install.

  3. Escribe el nombre del paquete “Packages”. Por ejemplo, ggplot2.

  4. Click Install.

Lectura de paquetes

library(ggplot2)

Warning

La instalación de paquetes sólo se hace una. La lectura se realiza cada vez que se utilizan los paquetes.

Proyectos en RStudio 🍱

Proyectos en RStudio

Un proyecto es un directorio de trabajo (carpeta) que contiene todo lo necesario para trabajar en un análisis de datos (proyecto) específico. Tipos de proyectos: documentos, presentaciones, paquetes, Webs,…

Creación de un proyecto Quarto

File > New proyect >

Creación de Quarto Project

Creación de proyectos Quarto

Creación de Proyectos Quarto

Estructura básica de poyectos

Aunque podemos tener todos los archivos en la carpeta del proyecto (para proyectos pequeños) lo ideal es crear siempre una estructura.

  • 📁 data: contiene los archivos de datos.

  • 📂 img: contiene las imágenes.

  • 📂 exer: ejercicios, practicas.

Más personal:

  • 📂 old: documentos que ya no necesito, pero por si acaso…

Estructura de proyecto

Compilación de documentos

Compilación de documentos

Informes reproducibles 🤔

¿Por qué informes reproducibles?

Growth in a Time of Debt (2010)

Un famoso artículo académico de 2010, en el que se basan los grandes políticos para reforzar los argumentos a favor de los recortes de austeridad, contenía errores significativos:

  • De código (excluyeron a cinco países con una importante deuda y alto crecimiento).

  • De manipulación de los datos (excluyeron del cómputo algunos países y algunos años).

  • De cálculo estadístico (errores en las ponderaciones).

Warning

Estos errores se debieron al mal uso de una hoja de cálculo de Excel.

¿Qué es Quarto? 🤔

Quarto es un lenguaje que tiene como base Markdown

(otro lenguaje). Entonces, empecemos viendo primero Markdown… 🤔

Your data tells a story. Tell it with R Markdown. Turn your analyses into high quality documents, reports, presentations and dashboards. https://rmarkdown.rstudio.com/

R Markdown. Artwork by Allison Horst

Warning

Sintaxis Markdonw

Help > Markdown Quick Reference

https://rmarkdown.rstudio.com/

Cheatseets

Entonces, ¿qué es Quarto?

Un nuevo marco de escritura para ciencia de datos, que combina código, resultados y comentarios. Se nutre de la experiencia de RMarkdown.

Los documentos de Quarto (*.qmd) son completamente reproducibles y soportan docenas de formatos de salida tales como PDFs, archivos de Word, presentaciones, artículos científicos,…

¿Qué incluye?

  • Presentación de código y ecuaciones LaTeX
  • Inclusión de resultados en la salida de las diapositivas
  • Fondos de imagen, video e iframe
  • Transiciones y animaciones elegantes
  • Impresión a PDF, HTML

Más información: https://quarto.org.

Quarto (fuente)

Estructura del documento

Quarto (resultado)

Render

YAML en Quarto

title: "Mi informe en Quarto"
subtitle: "Va a ser genial"
author: "Gema Fernández-Avilés"
date: "2025-03-09"
format: 
  html:
   embed-resources: true
   theme: cerulean
   toc-title: Summary
   toc: true
   number-sections: true
  pdf:
    toc: true
    number-sections: true
    colorlinks: true

Texto en Quarto

Sintaxis Markdown

Cabeceros
----------
# Títutlo
## Subtítulo

Listas
--------
+ Desayuno
+ Comida
+ Cena

Imágenes en Quarto

![Marco alemán](img/marco.jpg)

Marco alemán

Ecuaciones con LaTeX

\begin{gather*}
a_1=b_1+c_1\\
a_2=b_2+c_2-d_2+e_2
\end{gather*}

\begin{align}
a_{11}& =b_{11}&
  a_{12}& =b_{12}\\
a_{21}& =b_{21}&
  a_{22}& =b_{22}+c_{22}
\end{align}
\[\begin{gather*} a_1=b_1+c_1\\ a_2=b_2+c_2-d_2+e_2 \end{gather*}\] \[\begin{align} a_{11}& =b_{11}& a_{12}& =b_{12}\\ a_{21}& =b_{21}& a_{22}& =b_{22}+c_{22} \end{align}\]

Opciones de chunks

#| echo: true
#| eval: false
#| fig-width: 10
#| fig-height: 4.5
#| code-fold: true
#| code-summary: código plot interactivo
#| code-overflow: scroll
#| code-line-numbers: true
#| code-copy: true

library(gapminder)
library(ggplot2)
library(plotly)

g<-ggplot(data=gapminder,
       aes(x=gdpPercap, y=lifeExp)) +
       geom_point(aes(color=continent)) +
       geom_smooth(method = "loess")

ggplotly(g) 

Código ejecutable

La Figure 1 representa….

código plot interactivo
library(gapminder)
library(ggplot2)
library(plotly)

g<-ggplot(data=gapminder,
       aes(x=gdpPercap, y=lifeExp)) +
       geom_point(aes(color=continent)) +
       geom_smooth(method = "loess")

ggplotly(g) 
Figure 1: Esperanza de vida y PIBpc.

Styler: estilo de código 🔡

¿Qué interior te gusta más?

Imagen tomada de: https://www.hola.com/hola-living/20200213160462/isabel-preysler-decoracion-terraza-invierno/

Imagen tomada de: https://es.123rf.com/imagenes-de-archivo/casa_desordenada.html

¿Qué interior te gusta más?

Imagen adaptada de: https://www.hola.com/hola-living/20200213160462/isabel-preysler-decoracion-terraza-invierno/

Imagen adaptada de: https://es.123rf.com/imagenes-de-archivo/casa_desordenada.html

La guía de estilo tidyverse

A. MeencantalaciudaddeSevilla

B. Me encanta la cuidad de Sevilla

La guía completa se encuentra en: The tidyverse style guide

Nombre de ficheros

# Good
fit_models.R
utility_functions.R
00_download.R
01_explore.R

# Bad
fit models.R           # espacios
fitmodels.r            # todo junto y r   
utility.Functions.R    # otros estilos anteriores

Sintaxis

snake_case: para nombres de objetos y funciones debe usarse minúscula, números y _ guión bajo para separar palabras dentro del nombre.

# Good
day_one
day_1

# Bad
DayOne
dayone

4. ¿Qué hemos aprendido? 📖

  • Lo básico de R.

  • El entorno de RStudio.

  • Crear proyectos (Quarto o no): créate uno para cada análisis que hagas.

  • Sintaxis Markdown y Quarto.

  • Hacer informes reproducibles.

  • El “estilo” de código.

Nuestra filosofía 📖: learning by doing

  • Recuerda que los ordenadores actualmente no son inteligentes.

  • Filosofía: copy, paste, and tweak.

  • La mejor forma de aprender código es haciéndolo.

  • La práctica es la clave.

Referencias

Fernández-Avilés, G, and JM Montero. 2024. Fundamentos de Ciencia de Datos Con R. McGraw-Hill.
Ismay, Chester, and Albert Y Kim. 2019. Statistical Inference via Data Science: A ModernDive into r and the Tidyverse. CRC Press.
Wickham, Hadley, and Garrett Grolemund. 2016. R for Data Science: Import, Tidy, Transform, Visualize, and Model Data. " O’Reilly Media, Inc.".